package com.copa.l24;

/**
 * @author copa
 * @createDate 2022-05-05 14:12
 * @function 递归法
 */
public class Test2 {

    public ListNode swapPairs(ListNode head) {
        // 首先是若head只有0或1个节点，直接返回
        if (head == null || head.next == null) {
            return head;
        }
        // 这里定义next指针，在head指针的下一个
        ListNode next = head.next;
        // 这里递归，链接到这个链表
        head.next = swapPairs(head.next.next);
        // next指针的next改变为head
        next.next = head;
        return next;
    }

    public static void main(String[] args) {
        ListNode listNode = new ListNode(1);
        listNode.next = new ListNode(2);
        listNode.next.next = new ListNode(3);
        listNode.next.next.next = new ListNode(4);
        ListNode node = new Test2().swapPairs(listNode);
        while (node != null) {
            System.out.println(node.val);
            node = node.next;
        }
    }
}
